set(tblgen_feat_list)
if(BISHENGIR_BUILD_STANDALONE_IR_ONLY)
  list(APPEND tblgen_feat_list -DBISHENGIR_BUILD_STANDALONE_IR_ONLY)
endif()

set(LLVM_TARGET_DEFINITIONS HIVMOps.td)
mlir_tablegen(HIVMDialect.h.inc -gen-dialect-decls -dialect=hivm ${tblgen_feat_list})
mlir_tablegen(HIVMDialect.cpp.inc -gen-dialect-defs -dialect=hivm ${tblgen_feat_list})
mlir_tablegen(HIVMOps.h.inc -gen-op-decls)
mlir_tablegen(HIVMOps.cpp.inc -gen-op-defs)
add_public_tablegen_target(BiShengIRHIVMIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMInterfaces.td)
mlir_tablegen(HIVMInterfaces.h.inc -gen-op-interface-decls)
mlir_tablegen(HIVMInterfaces.cpp.inc -gen-op-interface-defs)
add_public_tablegen_target(BiShengIRHIVMInterfacesIncGen)
add_dependencies(mlir-headers BiShengIRHIVMInterfacesIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMDMAOps.td)
mlir_tablegen(HIVMDMAOps.h.inc -gen-op-decls)
mlir_tablegen(HIVMDMAOps.cpp.inc -gen-op-defs)
add_public_tablegen_target(BiShengIRHIVMDMAOpsIncGen)
add_dependencies(mlir-headers BiShengIRHIVMDMAOpsIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMMacroOps.td)
mlir_tablegen(HIVMMacroOps.h.inc -gen-op-decls)
mlir_tablegen(HIVMMacroOps.cpp.inc -gen-op-defs)
add_public_tablegen_target(BiShengIRHIVMMacroOpsIncGen)
add_dependencies(mlir-headers BiShengIRHIVMMacroOpsIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMVectorOps.td)
mlir_tablegen(HIVMVectorOps.h.inc -gen-op-decls)
mlir_tablegen(HIVMVectorOps.cpp.inc -gen-op-defs)
add_public_tablegen_target(BiShengIRHIVMVectorOpsIncGen)
add_dependencies(mlir-headers BiShengIRHIVMVectorOpsIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMSynchronizationOps.td)
mlir_tablegen(HIVMSynchronizationOps.h.inc -gen-op-decls)
mlir_tablegen(HIVMSynchronizationOps.cpp.inc -gen-op-defs)
add_public_tablegen_target(BiShengIRHIVMSynchronizationOpsIncGen)
add_dependencies(mlir-headers BiShengIRHIVMSynchronizationOpsIncGen)

set(LLVM_TARGET_DEFINITIONS HIVMAttrs.td)
mlir_tablegen(HIVMEnums.h.inc -gen-enum-decls)
mlir_tablegen(HIVMEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(HIVMAttrs.h.inc -gen-attrdef-decls -attrdefs-dialect=hivm)
mlir_tablegen(HIVMAttrs.cpp.inc -gen-attrdef-defs -attrdefs-dialect=hivm)
mlir_tablegen(HIVMTypes.h.inc -gen-typedef-decls -typedefs-dialect=hivm)
mlir_tablegen(HIVMTypes.cpp.inc -gen-typedef-defs -typedefs-dialect=hivm)
add_public_tablegen_target(BiShengIRHIVMEnumsIncGen)
add_public_tablegen_target(BiShengIRHIVMAttributesIncGen)
add_dependencies(mlir-headers BiShengIRHIVMEnumsIncGen)
add_dependencies(mlir-headers BiShengIRHIVMAttributesIncGen)

add_bishengir_doc(HIVMDoc HIVMDialect Dialects/ -gen-dialect-doc -dialect=hivm)
